#include<iostream>
#include<vector>
#include<unordered_map>
#include<string>
using namespace std;

//原问题：构造长为n的字符串
//枚举一个字母
//子问题：构造长度为n- 1 的字符串
//原问题和子问题相似->适合使用递归来解决
//回溯的特点：有一个增量构造递归的过程

//回溯三问：
//当前操作
//子问题
//下一个子问题

//以这道题目为例：使用一个path数组记录路径上的字母
//枚举path[i]要填入的字母
//构造字符串： 构造字符串>= i的部分
//下一个子问题  构造字符串 >= i + 1的部分


//使用回溯(恢复现场)的方式来理解



string dig[10] = {" "," ","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
//这道题目为什么会想到使用回溯：
void dfs(int i,int n,vector<int>& path,vector<string>& ans)
{
    //i的含义：表示正在处理digits字符串的第i个数组，下标从0开始
    //边界条件
    if(i == n)
    {
        ans.emplace_back(path);
    }
    for(char )
    
}
vector<string> letterCombinations(string digits) {
    //数字与字母的映射
    //可以使用数组，可以使用map
   //string dig[10] = {" "," ","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    // unordered_map<int,string> dig;
    // dig[2] = "abc";
    // dig[3] = "def";
    int n = digits.size();
    vector<int> path;
    vector<string> ans;
    dfs(0,n,path,ans);

    }
int main()
{

}